<?php
class Derivada extends CI_Controller {
    
    public function __construct() {
        parent::__construct();
        $this->load->helper(array('url'));
        $this->load->library(array('session', 'r_session', 'form_validation', 'email'));
        $this->load->model(array('nc_model', 'derivadas_model', 'usuarios_model'));
        $this->r_session->check($this->session->all_userdata());
    }
    
    public function pendientes() {
        $session = $this->session->all_userdata();
        $session['title'] = 'NC Derivadas Pendientes';
        
        $derivadas = $this->nc_model->nc_derivadas($session['SID']);
        
        foreach ($derivadas as $key => $derivada) {
            $derivadas[$key]['derivada'] = $this->derivadas_model->get_derivada_por_id_nc($derivada['idnc']);
        }
        $data['derivadas'] = $derivadas;
        
        $this->load->view('layout/header', $session);
        $this->load->view('derivada/pendientes', $data);
        $this->load->view('layout/footer');
    }
    
    public function crear($idnc) {
        $this->load->model(array('disposiciones_model', 'tipos_accion_model'));
        $session = $this->session->all_userdata();
        $session['title'] = 'Responder NC Derivada';
        $data['idnc'] = $idnc;
        $data['disposiciones'] = $this->disposiciones_model->get_disposiciones();
        $data['tipos_accion'] = $this->tipos_accion_model->get_tipos_accion();
        $data['nc'] = $this->nc_model->get_nc($idnc);
        $data['usuarios'] = $this->usuarios_model->get_usuarios();
        
        $this->form_validation->set_rules('disposicion', 'Disposicion', 'required');
        $this->form_validation->set_rules('descripcion', 'Descripción', 'required');
        $this->form_validation->set_rules('accion', 'Acción', 'required');
        
        $accion = $this->input->post('accion');
        
        if($accion == "1") {
            $this->form_validation->set_rules('tipo_accion', 'Tipo', 'required');
            $this->form_validation->set_rules('fecha_prevista', 'Fecha Prevista', 'required');
            $this->form_validation->set_rules('causa_raiz', 'Causa Raíz', 'required');
            $this->form_validation->set_rules('accion_text', 'Acción', 'required');
        }
        
        if($this->form_validation->run() == FALSE) {
            
        } else {
            $datos = array(
                'idnc' => $idnc,
                'disposicion' => $this->input->post('disposicion'),
                'descripcion' => $this->input->post('descripcion'),
                'accion' => $this->input->post('accion'),
                'idusuario' => $session['SID']
            ); 
            
            if($accion == "0") {
                $this->derivadas_model->set_derivada($datos);
                $datos = array(
                    'cerrada' => 1,
                    'estado' => 1
                );
                $this->nc_model->update($datos, $idnc);
                
                // Email para el que generó la NC
                $idusuariosemail = $data['nc']['idusuario'];
                $usuario_destino = $this->usuarios_model->get_usuario($idusuariosemail);

                $from = $session['usuario'];
                $to = $usuario_destino['usuario'];
                $subject = "No Conformidad cerrada";
                $body = "<h1>No conformidad cerrada</h1>
                    <br>".$session['nombre']." ".$session['apellido']." 
                    cerró la NC ".$idnc;

                $config['charset'] = 'utf-8';
                $config['wordwrap'] = TRUE;
                $config['mailtype'] = 'html';
                $this->email->initialize($config);


                $this->email->from($from, $session['nombre'].' '.$session['apellido']);
                $this->email->to($to);
                $this->email->subject($subject);
                $this->email->message($body);

                $this->email->send();
                
                redirect('/derivada/pendientes/', 'refresh');
            } else {
                $datos['tipo_accion'] = $this->input->post('tipo_accion');
                $datos['fecha_prevista'] = $this->input->post('fecha_prevista');
                $datos['causa_raiz'] = $this->input->post('causa_raiz');
                $datos['accion_text'] = $this->input->post('accion_text');
                $datos['aprueba'] = $this->input->post('aprueba');
                
                $this->derivadas_model->set_derivada($datos);
                $datos = array(
                    'estado' => 1
                );
                $this->nc_model->update($datos, $idnc);
                
                // Email para el que tiene que aprobar
                $usuario_destino = $this->usuarios_model->get_usuario($this->input->post('aprueba'));

                $from = $session['usuario'];
                $to = $usuario_destino['usuario'];
                $subject = "No Conformidad";
                $body = "<h1>No conformidad para aprobar</h1>
                    <br>".$session['nombre']." ".$session['apellido']." 
                    está a la espera de la aprobación de la NC ".$idnc;

                $config['charset'] = 'utf-8';
                $config['wordwrap'] = TRUE;
                $config['mailtype'] = 'html';
                $this->email->initialize($config);


                $this->email->from($from, $session['nombre'].' '.$session['apellido']);
                $this->email->to($to);
                $this->email->subject($subject);
                $this->email->message($body);

                $this->email->send();
                
                
                // Email para el que generó la NC
                $idusuariosemail = $data['nc']['idusuario'];
                $usuario_destino = $this->usuarios_model->get_usuario($idusuariosemail);

                $from = $session['usuario'];
                $to = $usuario_destino['usuario'];
                $subject = "No Conformidad";
                $body = "<h1>No conformidad</h1>
                    <br>".$session['nombre']." ".$session['apellido']." 
                    envió a aprobar la NC ".$idnc;

                $config['charset'] = 'utf-8';
                $config['wordwrap'] = TRUE;
                $config['mailtype'] = 'html';
                $this->email->initialize($config);


                $this->email->from($from, $session['nombre'].' '.$session['apellido']);
                $this->email->to($to);
                $this->email->subject($subject);
                $this->email->message($body);

                $this->email->send();
                
                
                redirect('/derivada/pendientes/', 'refresh');
            }
        }
        
        $this->load->view('layout/header', $session);
        $this->load->view('derivada/crear', $data);
        $this->load->view('layout/footer');
    }
    
}
?>
